#pragma once
#include "../CGIPrefix.h"

namespace Alice{
    class VulkanDevice;
    class VulkanCommandBuffer;
    class VulkanQueue
    {
    public:
#ifdef _DEBUG
        std::string mDebugName;
#endif
        VkQueue mQueue;
        uint32 mFamilyIndex;
        uint32 mQueueIndex;
        VulkanDevice* mDevice;
        VulkanQueue(
#ifdef _DEBUG
            const char * inDebugName,
#endif
            VulkanDevice* InDevice, uint32 InFamilyIndex);
        inline uint32 GetFamilyIndex() const
        {
            return mFamilyIndex;
        }

        inline uint32 GetQueueIndex() const
        {
            return mQueueIndex;
        }
        void Submit(VulkanCommandBuffer* CmdBuffer, uint32 NumSignalSemaphores = 0, VkSemaphore* SignalSemaphores = nullptr);
    };
}